package com.atguigu.guli.service.base.result;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@Data
@ApiModel("统一响应类")
@Accessors(chain = true)
public class R  {
    @ApiModelProperty("响应状态码：20000代表成功，其他代表失败")
    private Integer code;
    @ApiModelProperty(value="响应是否成功" , hidden = true) //在swagger的文档中隐藏该属性
    private Boolean success;
    @ApiModelProperty("响应描述")
    private String message;
    @ApiModelProperty("响应数据")
    private Map data = new HashMap();

    //成功的响应：  code=20000
    public static R ok(){
        return R.setResultCodeEnum(ResultCodeEnum.SUCCESS);
    }
    //通用的失败的响应
    public static R error(){
        return R.setResultCodeEnum(ResultCodeEnum.UNKNOWN_REASON);
    }
    //自己指定需要的失败的响应
    public static R setResultCodeEnum(ResultCodeEnum codeEnum) {
        R r = new R();
        r.setCode(codeEnum.getCode());
        r.setMessage(codeEnum.getMessage());
        r.setSuccess(codeEnum.getSuccess());
        return r;
    }
    //修改成员变量属性值的方法
    //希望像data中设置多对键值对,创建新的方法，向data中添加数据
    public R setData(Object key , Object val){
        this.getData().put(key , val);
        return this;
    }

}
